package com.fowo.api.entity;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

@NoArgsConstructor
@Data
public class AmOd implements Serializable {

    @JsonProperty("code")
    private Integer code;
    @JsonProperty("message")
    private String message;
    @JsonProperty("error_details")
    private List<?> errorDetails;
    @JsonProperty("request_id")
    private String requestId;
    @JsonProperty("response_time")
    private String responseTime;
    @JsonProperty("data")
    private List<DataDTO> data;
    @JsonProperty("total")
    private Integer total;

    @NoArgsConstructor
    @Data
    public static class DataDTO {
        @JsonProperty("amazon_order_id")
        private String amazonOrderId;
        @JsonProperty("buyer_name")
        private String buyerName;
        @JsonProperty("buyer_email")
        private String buyerEmail;
        @JsonProperty("address")
        private String address;
        @JsonProperty("state_or_region")
        private String stateOrRegion;
        @JsonProperty("fulfillment_channel")
        private String fulfillmentChannel;
        @JsonProperty("sid")
        private String sid;
        @JsonProperty("country")
        private String country;
        @JsonProperty("city")
        private String city;
        @JsonProperty("district")
        private String district;
        @JsonProperty("order_status")
        private String orderStatus;
        @JsonProperty("is_assessed")
        private String isAssessed;
        @JsonProperty("order_total_amount")
        private String orderTotalAmount;
        @JsonProperty("currency")
        private String currency;
        @JsonProperty("icon")
        private String icon;
        @JsonProperty("postal_code")
        private String postalCode;
        @JsonProperty("is_mcf_order")
        private String isMcfOrder;
        @JsonProperty("is_return_order")
        private String isReturnOrder;
        @JsonProperty("is_replaced_order")
        private String isReplacedOrder;
        @JsonProperty("is_replacement_order")
        private String isReplacementOrder;
        @JsonProperty("country_code")
        private String countryCode;
        @JsonProperty("earliest_ship_date")
        private String earliestShipDate;
        @JsonProperty("earliest_ship_date_utc")
        private String earliestShipDateUtc;
        @JsonProperty("purchase_date_local")
        private String purchaseDateLocal;
        @JsonProperty("purchase_date_local_utc")
        private String purchaseDateLocalUtc;
        @JsonProperty("last_update_date")
        private String lastUpdateDate;
        @JsonProperty("last_update_date_utc")
        private String lastUpdateDateUtc;
        @JsonProperty("posted_date")
        private String postedDate;
        @JsonProperty("hide_time")
        private String hideTime;
        @JsonProperty("shipment_date")
        private String shipmentDate;
        @JsonProperty("address_line1")
        private String addressLine1;
        @JsonProperty("address_line2")
        private String addressLine2;
        @JsonProperty("address_line3")
        private String addressLine3;
        @JsonProperty("phone")
        private String phone;
        @JsonProperty("name")
        private String name;
        @JsonProperty("is_business_order")
        private String isBusinessOrder;
        @JsonProperty("is_prime")
        private String isPrime;
        @JsonProperty("is_premium_order")
        private String isPremiumOrder;
        @JsonProperty("is_return")
        private String isReturn;
        @JsonProperty("taxes_included")
        private String taxesIncluded;
        @JsonProperty("shipping_address")
        private String shippingAddress;
        @JsonProperty("ship_service_level")
        private String shipServiceLevel;
        @JsonProperty("shipment_service_level_category")
        private String shipmentServiceLevelCategory;
        @JsonProperty("purchase_order_number")
        private String purchaseOrderNumber;
        @JsonProperty("payment_method")
        private String paymentMethod;
        @JsonProperty("cba_displayable_shipping_label")
        private String cbaDisplayableShippingLabel;
        @JsonProperty("order_type")
        private String orderType;
        @JsonProperty("latest_ship_date")
        private String latestShipDate;
        @JsonProperty("earliest_delivery_date")
        private String earliestDeliveryDate;
        @JsonProperty("latest_delivery_date")
        private String latestDeliveryDate;
        @JsonProperty("number_of_items_shipped")
        private String numberOfItemsShipped;
        @JsonProperty("number_of_items_unshipped")
        private String numberOfItemsUnshipped;
        @JsonProperty("sales_channel")
        private String salesChannel;
        @JsonProperty("item_list")
        private List<ItemListDTO> itemList;
        @JsonProperty("is_promotion")
        private String isPromotion;

        @NoArgsConstructor
        @Data
        public static class ItemListDTO {
            @JsonProperty("id")
            private String id;
            @JsonProperty("title")
            private String title;
            @JsonProperty("seller_sku")
            private String sellerSku;
            @JsonProperty("asin")
            private String asin;
            @JsonProperty("order_item_id")
            private String orderItemId;
            @JsonProperty("points_monetary_value_amount")
            private String pointsMonetaryValueAmount;
            @JsonProperty("quantity_ordered")
            private String quantityOrdered;
            @JsonProperty("quantity_shipped")
            private String quantityShipped;
            @JsonProperty("item_price_amount")
            private String itemPriceAmount;
            @JsonProperty("item_tax_amount")
            private String itemTaxAmount;
            @JsonProperty("shipping_price_amount")
            private String shippingPriceAmount;
            @JsonProperty("shipping_tax_amount")
            private String shippingTaxAmount;
            @JsonProperty("gift_wrap_price_amount")
            private String giftWrapPriceAmount;
            @JsonProperty("gift_wrap_tax_amount")
            private String giftWrapTaxAmount;
            @JsonProperty("shipping_discount_amount")
            private String shippingDiscountAmount;
            @JsonProperty("cod_fee_amount")
            private String codFeeAmount;
            @JsonProperty("promotion_ids")
            private List<?> promotionIds;
            @JsonProperty("shipping_discount_tax_amount")
            private String shippingDiscountTaxAmount;
            @JsonProperty("promotion_discount_amount")
            private String promotionDiscountAmount;
            @JsonProperty("promotion_discount_tax_amount")
            private String promotionDiscountTaxAmount;
            @JsonProperty("cod_fee_discount_amount")
            private String codFeeDiscountAmount;
            @JsonProperty("gift_message_text")
            private String giftMessageText;
            @JsonProperty("gift_wrap_level")
            private String giftWrapLevel;
            @JsonProperty("condition_note")
            private String conditionNote;
            @JsonProperty("condition_id")
            private String conditionId;
            @JsonProperty("condition_subtype_id")
            private String conditionSubtypeId;
            @JsonProperty("scheduled_delivery_start_date")
            private String scheduledDeliveryStartDate;
            @JsonProperty("scheduled_delivery_end_date")
            private String scheduledDeliveryEndDate;
            @JsonProperty("price_designation")
            private String priceDesignation;
            @JsonProperty("sid")
            private String sid;
            @JsonProperty("sku")
            private String sku;
            @JsonProperty("product_name")
            private String productName;
            @JsonProperty("cg_price")
            private String cgPrice;
            @JsonProperty("product_id")
            private String productId;
            @JsonProperty("pic_url")
            private String picUrl;
            @JsonProperty("fee_name")
            private String feeName;
            @JsonProperty("cg_transport_costs")
            private String cgTransportCosts;
            @JsonProperty("fba_shipment_amount")
            private String fbaShipmentAmount;
            @JsonProperty("commission_amount")
            private String commissionAmount;
            @JsonProperty("other_amount")
            private String otherAmount;
            @JsonProperty("asin_url")
            private String asinUrl;
            @JsonProperty("fee_currency")
            private String feeCurrency;
            @JsonProperty("fee_icon")
            private String feeIcon;
            @JsonProperty("fee_cost_amount")
            private String feeCostAmount;
            @JsonProperty("fee_cost")
            private String feeCost;
            @JsonProperty("sales_price_amount")
            private String salesPriceAmount;
            @JsonProperty("unit_price_amount")
            private String unitPriceAmount;
            @JsonProperty("tax_amount")
            private String taxAmount;
            @JsonProperty("promotion_amount")
            private String promotionAmount;
            @JsonProperty("profit")
            private String profit;
            @JsonProperty("item_discount")
            private String itemDiscount;
        }
    }
}
